.\" Copyright 2012, Cyrill Gorcunov <gorcunov@openvz.org>
.\" Copyright 2012, 2013, 2015, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Copyright 2024, Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH PR_SET_MM_START_CODE 2const 2024-06-01 "Linux man-pages 6.9.1"
.SH NAME
PR_SET_MM_START_CODE,
PR_SET_MM_END_CODE
\-
modify kernel memory map descriptor fields
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.BR "#include <linux/prctl.h>" "  /* Definition of " PR_* " constants */"
.B #include <sys/prctl.h>
.P
.BI "int prctl(PR_SET_MM, PR_SET_MM_START_CODE, unsigned long " addr ", 0L, 0L);"
.BI "int prctl(PR_SET_MM, PR_SET_MM_END_CODE, unsigned long " addr ", 0L, 0L);"
.fi
.SH DESCRIPTION
.TP
.B PR_SET_MM_START_CODE
Set the address above which the program text can run.
The corresponding memory area must be readable and executable,
but not writable or shareable (see
.BR mprotect (2)
and
.BR mmap (2)
for more information).
.TP
.B PR_SET_MM_END_CODE
Set the address below which the program text can run.
The corresponding memory area must be readable and executable,
but not writable or shareable.
.SH RETURN VALUE
On success,
0 is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
.SH ERRORS
.TP
.B EINVAL
.I addr
is greater than
.B TASK_SIZE
(the limit on the size of the user address space for this architecture).
.TP
.B EINVAL
The permissions of the corresponding memory area are not as required.
.SH STANDARDS
Linux.
.SH HISTORY
Linux 3.3.
.\" commit 028ee4be34a09a6d48bdf30ab991ae933a7bc036
.SH SEE ALSO
.BR prctl (2)
